<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>AngularJS&middot; Controller</title>
    <link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.2/css/bootstrap.css">
    <style>
        .demo{
            margin-bottom:10px;
            border-bottom:1px solid #1b926c;
        }
    </style>
</head>
<body>
  <div class="container">
      <div class="row">
          <nav class="navbar navbar-default">
              <div class="container-fluid">
                  <div class="navbar-header">
                      <a class="navbar-brand" href="../index.html">首页</a>
                  </div>
                  <ul class="nav navbar-nav">
                      <li class="active"><a href="javascript:void(0)">Link</a></li>
                      <li><a href="javascript:void(0)">Link2</a></li>
                  </ul>
              </div>
          </nav>
      </div>
      <div ng-app="myApp">
          <div class="row demo" ng-controller="EmailController">
              <h3>Demo1:$interpolate使用,邮件</h3>
              <input ng-model="to" type="text" placeholder="Email"/>
              <br/>
              <textarea ng-model="emailBody" name="emailBody" id="" cols="30" rows="10"></textarea>
              <h5>解析结果：</h5>
              <pre>__ previewText __</pre>
          </div>
      </div>
  </div>
</body>
</html>
<script src="http://cdn.bootcss.com/angular.js/1.3.8/angular.js" type="text/javascript"></script>
<script>

    /**
     * 如果需要在文本中使用不同于{{ }}的符号来标识表达式的开始和结束，可以在
     $inter polateProvider中配置。
     用startSymbol()方法可以修改标识开始的符号。这个方法接受一个参数。
      value（字符型）：开始符号的值。
     用endSymbol()方法可以修改标识结束的符号。这个方法也接受一个参数。
      value（字符型）： 结束符号的值。
     */
    angular.module("EmailParserModule",[]).config(['$interpolateProvider', function($interpolateProvider) {
        $interpolateProvider.startSymbol('__');
        $interpolateProvider.endSymbol('__');
    }]).factory('EmailParser', ['$interpolate', function($interpolate) {
         // 处理解析的服务
          return {
                    parse: function(text, context) {
                        var template = $interpolate(text);
                        return template(context);
           }
        };
    }]);

    //将上面的模块EmailParserModule注入到应用中，并在邮件正文的文本中运行这个邮件解析器
    var myApp=angular.module("myApp",["EmailParserModule"]);
    myApp.controller("EmailController",function($scope,EmailParser){
         //设置监听
         $scope.$watch("emailBody",function(body){
             if (body) {
                 $scope.previewText = EmailParser.parse(body, {
                     to: $scope.to
                 });
             }
         });
    });

</script>
